// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

const PLAYER = [
  'h5', //    原生
  'hk', //    海康
  'dh', //    大华
  'h265', //  H265
  'ali', //   阿里
]

const PROTO = [
  'https', // https: ...
  'http', //  http: ...
  'wss', //   wss: ...
  'ws', //    ws: ...

  'rtc', //   https: webrtc?app=&stream=&type=play
  'rtmp', //  rtmp: /12345678
  'rtmps', // rtmps: /12345678
  'rtsp', //  rtsp: /12345678
  'rtsps', // rtsps: /12345678
]

const TYPE = [
  'mp4', //   ...live.mp4
  'flv', //   ...live.flv
  'ts', //    ...live.ts
  'm3u8', //  ...hls.m3u8
]

// ============================== 导出属性 ============================== //

export default {
  // —————————————————————————————— 数据属性 —————————————————————————————— //

  src: { type: String, default: '' }, // 能直接播放的源路径 (优先级最高)

  code: { type: String, default: '' }, // 能直接播放的 thirdCode (优先级最高)

  id: { type: String, default: '' }, // 设备 ID (由此查询视频流或设备信息)

  index: { type: Number, default: 0 }, // 播放器序号 (并排多个播放器时用到)

  name: { type: String, default: '' }, // 视频名称 (提示语的查询某某时使用)

  visible: { type: Boolean, default: true }, // 是否可见 (用于弹窗中的视频显隐)

  // —————————————————————————————— 播放器属性 —————————————————————————————— //

  h5: { type: Boolean, default: false }, // 是否为 H5 播放器

  hk: { type: Boolean, default: false }, // 是否为海康播放器

  dh: { type: Boolean, default: false }, // 是否为大华播放器

  h265: { type: Boolean, default: false }, // 是否为 H265 播放器

  ali: { type: Boolean, default: false }, // 是否为阿里播放器

  player: { type: String, default: CORE.MAP.VIDEO_PLAYER, validator: (x) => !x || PLAYER.includes(x) }, // 播放器 (为空则使用 ali)

  // —————————————————————————————— 协议属性 —————————————————————————————— //

  rtc: { type: Boolean, default: false }, // 是否为 rtc 协议 (忽略类型配置)
  rtmp: { type: Boolean, default: false }, // 是否为 rtmp 协议 (忽略类型配置)
  rtmps: { type: Boolean, default: false }, // 是否为 rtmps 协议 (忽略类型配置)
  rtsp: { type: Boolean, default: false }, // 是否为 rtsp 协议 (忽略类型配置)
  rtsps: { type: Boolean, default: false }, // 是否为 rtsps 协议 (忽略类型配置)

  https: { type: Boolean, default: false }, // 是否为 https 协议
  http: { type: Boolean, default: false }, // 是否为 http 协议
  wss: { type: Boolean, default: false }, // 是否为 wss 协议
  ws: { type: Boolean, default: false }, // 是否为 ws 协议

  proto: { type: String, default: CORE.MAP.VIDEO_PROTO, validator: (x) => !x || PROTO.includes(x) }, // 协议 (为空则使用 http)

  // —————————————————————————————— 类型属性 —————————————————————————————— //

  mp4: { type: Boolean, default: false }, // 是否为 mp4 类型
  flv: { type: Boolean, default: false }, // 是否为 flv 类型
  ts: { type: Boolean, default: false }, // 是否为 ts 类型
  m3u8: { type: Boolean, default: false }, // 是否为 m3u8 类型

  type: { type: String, default: CORE.MAP.VIDEO_TYPE, validator: (x) => !x || TYPE.includes(x) }, // 类型 (为空则使用 m3u8)
}
